/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package E_implicito_LinearQuotient;


import arquivos.MetodoHash;
import java.util.ArrayList;
import java.util.Iterator;


/**
 *
 * @author rafaelob
 */
public class EncadeamentoILQ extends MetodoHash{

    private TabelaHash tabela;
    //private Set<Integer> chaves;
    private ArrayList<Integer> chaves;
    private int colisoes = 0;
    private int acessos = 0;

    public EncadeamentoILQ(int tamanho, ArrayList<Integer> chaves)  {
        this.chaves = chaves;
        tabela = new TabelaHash(tamanho);
        insereTabelaHash();
        buscaTabelaHash();
    }

    public TabelaHash getTabela() {
        return tabela;
    }


    private void insereTabelaHash()  {
        Iterator<Integer> iterator = chaves.iterator();
        while (iterator.hasNext()) {
            int chaveAtual = iterator.next();
            int result = tabela.insertion(chaveAtual); // recebe o retorno da inserção
            if (result == 1) { //se o registro foi inserido com sucesso, mas teve colisão
                this.colisoes++;
            }
        }
    }

    private void buscaTabelaHash() {
        Iterator<Integer> iterator = chaves.iterator();
        while (iterator.hasNext()) {
            this.acessos = this.acessos + tabela.search(iterator.next());
        }


    }

    public int getAcessos() {
        return acessos;
    }

    public int getColisoes() {
        return colisoes;
    }
}
